---
title: MultiTargetUndirectedEdgeRenderer 无源多向边渲染器
icon: Network
relatedFile: app/src/core/render/canvas2d/entityRenderer/multiTargetUndirectedEdge/MultiTargetUndirectedEdgeRenderer.tsx
---

这个服务用于渲染无源多向边（MTU Edge）。它负责根据边的状态、连接的节点数量以及渲染类型来绘制边及其相关元素，如碰撞盒、文本和箭头。

## 渲染逻辑概述

该服务的主要功能是 `render` 方法，它接收一个 `MultiTargetUndirectedEdge` 对象作为参数，并根据该对象的属性进行绘制。

- **选中状态渲染**: 如果边被选中，它会渲染该边的碰撞盒。
- **特殊情况处理**:
  - 当连接的节点少于两个时，会绘制一个圆圈作为提示：
    - 如果只有一个目标节点，圆圈会绘制在该节点的中心。
    - 如果没有目标节点，圆圈会绘制在世界坐标的 (0,0) 位置。
- **正常情况渲染（连接两个或更多节点）**:
  - **颜色确定**: 边的颜色会根据其自身颜色属性或当前舞台样式来确定。
  - **文本渲染**: 如果边包含文本，会在边的中心位置渲染多行文本。
  - **渲染类型区分**: 根据 `edge.renderType` 的值，采用不同的绘制策略：
    - **`"line"` 类型渲染**:
      - 为每个目标节点绘制一条从节点到边中心的直线。
      - 直线会根据文本是否存在进行调整，以避免与文本重叠。
      - **箭头渲染**: 根据 `edge.arrow` 属性，在直线的内侧或外侧绘制箭头。
    - **`"convex"` 类型渲染**:
      - 收集所有目标节点的碰撞盒以及文本区域（如果存在）的顶点。
      - 计算这些顶点的凸包。
      - 绘制连接凸包顶点的实线，形成一个包围所有相关元素的形状。

## API

### `render(edge: MultiTargetUndirectedEdge): void`

用于绘制给定的 `MultiTargetUndirectedEdge` 对象。

- `edge`: 要渲染的无源多向边对象。
